Location sharing

ABSTRACT

Geographic location data is sent from a first device to a second device with a modified message to signal the presence of geographic location data associated with the message. The message can include (or attach) the geographic location data or file, or the message can include a link to a network-based resource which the second device can use to obtain the geographic location data. In some implementations, when a user of the first device views a location on a map display of the first device, a graphical user interface is presented to allow the user to select an option to share the geographic location with the second device. The second device receives geographic location data or a link from the first device which can trigger a map display on the second device showing the location of the first device and, optionally, the location of the second device.

TECHNICAL FIELD

This subject matter is generally related to data communications betweenelectronic devices.

BACKGROUND

Conventional mobile devices are often dedicated to performing a specificapplication. For example, a mobile phone provides telephony services, apersonal digital assistant (PDA) provides a way to organize addresses,contacts and notes, a media player plays content, email devices provideemail communication, a browser allows a user to surf the Internet, etc.Modern mobile devices can include two or more of these applications.

Some mobile devices (e.g., the iPhone®) include a short message service(SMS) for sending instant messages to one or more receiving devices.Some mobile devices also provide a map service which can use positioningtechnology to determine a user's geographic location and display an iconon a map display to show the user's current location. The map servicemay also allow the user to obtain directions to a desired destinationand display a route to the destination on the map display.

SUMMARY

A geographic location of a first device is determined. Input is obtainedspecifying sharing of the geographic location with a second device.Geographic location data is sent from a first device to a second devicewith a modified message to signal the presence of geographic locationdata associated with the message. The message can include (or attach)the geographic location data or file, or the message can include a linkto a network-based resource which the second device can use to obtainthe geographic location data. In some implementations, when a user ofthe first device views a location on a map display of the first device,a graphical user interface is presented to allow the user to select anoption to share the geographic location with the second device. Thesecond device receives geographic location data or a link from the firstdevice which can trigger a map display on the second device showing thelocation of the first device and, optionally, the location of the seconddevice. A route from the first device to the second device can begenerated and displayed on the map display of the first or seconddevice.

Other implementations are disclosed which are directed to systems,methods and computer-readable mediums. For example, in someimplementations contact information can be encoded in a text message andsent to a device where it can be displayed and added to an address bookapplication.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates an example mobile device.

FIG. 2 is a block diagram of an example network operating environmentfor the mobile device of FIG. 1.

FIG. 3 is a block diagram of an example architecture for the mobiledevice of FIG. 1.

FIG. 4 illustrates an example positioning system which can be used withthe mobile device of FIG. 1.

FIG. 5 illustrates an example map display showing the location of amobile device.

FIG. 6 illustrates an example user interface for sharing the location ofthe mobile device with other devices.

FIG. 7A illustrates an example user interface for instant messaging orSMS/text messaging used by a sending device.

FIG. 7B illustrates an example user interface for instant messaging orSMS/text messaging used by a receiving device.

FIG. 8 illustrates an example map display showing locations for asending and receiving device.

FIG. 9 is a flow diagram of an example process for sharing location datawhich can be implemented by a sending device.

FIG. 10 is a flow diagram of an example process for sharing locationdata which can be implemented by a receiving device.

DETAILED DESCRIPTION Example Mobile Device

FIG. 1 is a block diagram of an example mobile device 100. The mobiledevice 100 can be, for example, a handheld computer, a personal digitalassistant, a cellular telephone, a network appliance, a camera, a smartphone, an enhanced general packet radio service (EGPRS) mobile phone, anetwork base station, a media player, a navigation device, an emaildevice, a game console, or a combination of any two or more of thesedata processing devices or other data processing devices.

Mobile Device Overview

In some implementations, the mobile device 100 includes atouch-sensitive display 102. The touch-sensitive display 102 canimplement liquid crystal display (LCD) technology, light emittingpolymer display (LPD) technology, or some other display technology. Thetouch sensitive display 102 can be sensitive to haptic and/or tactilecontact with a user.

In some implementations, the touch-sensitive display 102 can comprise amulti-touch-sensitive display 102. A multi-touch-sensitive display 102can, for example, process multiple simultaneous touch points, includingprocessing data related to the pressure, degree, and/or position of eachtouch point. Such processing facilitates gestures and interactions withmultiple fingers, chording, and other interactions. Othertouch-sensitive display technologies can also be used, e.g., a displayin which contact is made using a stylus or other pointing device. Someexamples of multi-touch-sensitive display technology are described inU.S. Pat. Nos. 6,323,846, 6,570,557, 6,677,932, and 6,888,536, each ofwhich is incorporated by reference herein in its entirety.

In some implementations, the mobile device 100 can display one or moregraphical user interfaces on the touch-sensitive display 102 forproviding the user access to various system objects and for conveyinginformation to the user. In some implementations, the graphical userinterface can include one or more display objects 104, 106. In theexample shown, the display objects 104, 106, are graphic representationsof system objects. Some examples of system objects include devicefunctions, applications, windows, files, alerts, events, or otheridentifiable system objects.

Example Mobile Device Functionality

In some implementations, the mobile device 100 can implement multipledevice functionalities, such as a telephony device, an e-mail device, anetwork data communication device, a Wi-Fi base station device (notshown), and a media processing device. In some implementations,particular display objects 104 can be displayed in a menu bar 118. Insome implementations, device functionalities can be accessed from atop-level graphical user interface, such as the graphical user interfaceillustrated in FIG. 1. Touching one of the display objects 104 can, forexample, invoke corresponding functionality. For example, touching thedisplay object 189 would invoke an email application on the mobiledevice 100 for sending text and geographic location data files, asdescribed in reference to FIG. 6.

In some implementations, the mobile device 100 can implement networkdistribution functionality. For example, the functionality can enablethe user to take the mobile device 100 and provide access to itsassociated network while traveling. In particular, the mobile device 100can extend Internet access (e.g., Wi-Fi) to other wireless devices inthe vicinity. For example, mobile device 100 can be configured as a basestation for one or more devices. As such, mobile device 100 can grant ordeny network access to other wireless devices.

In some implementations, upon invocation of device functionality, thegraphical user interface of the mobile device 100 changes, or isaugmented or replaced with another user interface or user interfaceelements, to facilitate user access to particular functions associatedwith the corresponding device functionality. For example, in response toa user touching a phone object, the graphical user interface of thetouch-sensitive display 102 may present display objects related tovarious phone functions; likewise, touching of an email object may causethe graphical user interface to present display objects related tovarious e-mail functions; touching a Web object may cause the graphicaluser interface to present display objects related to various Web-surfingfunctions; and touching a media player object may cause the graphicaluser interface to present display objects related to various mediaprocessing functions.

In some implementations, the top-level graphical user interfaceenvironment or state of FIG. 1 can be restored by pressing a button 120located near the bottom of the mobile device 100. In someimplementations, each corresponding device functionality may havecorresponding “home” display objects displayed on the touch-sensitivedisplay 102, and the top-level graphical user interface environment ofFIG. 1 can be restored by pressing the “home” display object.

In some implementations, the top-level graphical user interface caninclude additional display objects 106, such as a short messagingservice (SMS) object 187, a calendar object, a photos object, a cameraobject, a calculator object, a stocks object, a weather object, a mapsobject 144, a notes object, a clock object, an address book object, anda settings object. Touching the maps object 144 can, for example, invokea mapping and location-based services environment and supportingfunctionality; likewise, a selection of any of the display objects 106can invoke a corresponding object environment and functionality.

Additional and/or different display objects can also be displayed in thegraphical user interface of FIG. 1. For example, if the device 100 isfunctioning as a base station for other devices, one or more“connection” objects may appear in the graphical user interface toindicate the connection. In some implementations, the display objects106 can be configured by a user, e.g., a user may specify which displayobjects 106 are displayed, and/or may download additional applicationsor other software that provides other functionalities and correspondingdisplay objects.

In some implementations, the mobile device 100 can include one or moreinput/output (I/O) devices and/or sensor devices. For example, a speaker160 and a microphone 162 can be included to facilitate voice-enabledfunctionalities, such as phone and voice mail functions. In someimplementations, an up/down button 184 for volume control of the speaker160 and the microphone 162 can be included. The mobile device 100 canalso include an on/off button 182 for a ring indicator of incoming phonecalls. In some implementations, a loud speaker 164 can be included tofacilitate hands-free voice functionalities, such as speaker phonefunctions. An audio jack 166 can also be included for use of headphonesand/or a microphone.

In some implementations, a proximity sensor 168 can be included tofacilitate the detection of the user positioning the mobile device 100proximate to the user's ear and, in response, to disengage thetouch-sensitive display 102 to prevent accidental function invocations.In some implementations, the touch-sensitive display 102 can be turnedoff to conserve additional power when the mobile device 100 is proximateto the user's ear.

Other sensors can also be used. For example, in some implementations, anambient light sensor 170 can be utilized to facilitate adjusting thebrightness of the touch-sensitive display 102. In some implementations,an accelerometer 172 can be utilized to detect movement of the mobiledevice 100, as indicated by the directional arrow 174. Accordingly,display objects and/or media can be presented according to a detectedorientation, e.g., portrait or landscape. In some implementations, themobile device 100 may include circuitry and sensors for supporting alocation determining capability, such as that provided by the GlobalPositioning System (GPS) or other positioning systems (e.g., systemsusing Wi-Fi access points, television signals, cellular grids, UniformResource Locators (URLs)). In some implementations, a positioning system(e.g., a GPS receiver) can be integrated into the mobile device 100 orprovided as a separate device that can be coupled to the mobile device100 through an interface (e.g., port device 190) to provide access tolocation-based services.

In some implementations, a port device 190, e.g., a Universal Serial Bus(USB) port, or a docking port, or some other wired port connection, canbe included. The port device 190 can, for example, be utilized toestablish a wired connection to other computing devices, such as othercommunication devices 100, network access devices, a personal computer,a printer, a display screen, or other processing devices capable ofreceiving and/or transmitting data. In some implementations, the portdevice 190 allows the mobile device 100 to synchronize with a hostdevice using one or more protocols, such as, for example, the TCP/IP,HTTP, UDP and any other known protocol.

The mobile device 100 can also include a camera lens and sensor 180. Insome implementations, the camera lens and sensor 180 can be located onthe back surface of the mobile device 100. The camera can capture stillimages and/or video.

The mobile device 100 can also include one or more wirelesscommunication subsystems, such as an 802.11b/g communication device 186,and/or a Bluetooth™ communication device 188. Other communicationprotocols can also be supported, including other 802.x communicationprotocols (e.g., WiMax, Wi-Fi, 3G), code division multiple access(CDMA), global system for mobile communications (GSM), Enhanced Data GSMEnvironment (EDGE), etc.

Network Operating Environment

FIG. 2 is a block diagram of an example network operating environmentfor the mobile device of FIG. 1. Mobile devices 202 a and 202 b can, forexample, communicate over one or more wired and/or wireless networks 210in data communication. For example, a wireless network 212, e.g., acellular network, can communicate with a wide area network (WAN) 214,such as the Internet, by use of a gateway 216. Likewise, an accessdevice 218, such as an 802.11g wireless access device, can providecommunication access to the wide area network 214. In someimplementations, both voice and data communications can be establishedover the wireless network 212 and the access device 218. For example,the mobile device 202 a can place and receive phone calls (e.g., usingVoIP protocols), send and receive e-mail messages (e.g., using POP3protocol), and retrieve electronic documents and/or streams, such as webpages, photographs, and videos, over the wireless network 212, gateway216, and wide area network 214 (e.g., using TCP/IP or UDP protocols).Likewise, in some implementations, the mobile device 202 b can place andreceive phone calls, send and receive e-mail messages, and retrieveelectronic documents over the access device 218 and the wide areanetwork 214. In some implementations, the mobile device 202 a or 202 bcan be physically connected to the access device 218 using one or morecables and the access device 218 can be a personal computer. In thisconfiguration, the mobile device 202 a or 202 b can be referred to as a“tethered” device.

The mobile devices 202 a and 202 b can also establish communications byother means. For example, the wireless device 202 a can communicate withother wireless devices, e.g., other mobile devices 202 a or 202 b, cellphones, etc., over the wireless network 212. Likewise, the mobiledevices 202 a and 202 b can establish peer-to-peer communications 220,e.g., a personal area network, by use of one or more communicationsubsystems, such as the Bluetooth™ communication devices 188 shown inFIG. 1. Other communication protocols and topologies can also beimplemented.

The mobile device 202 a or 202 b can, for example, communicate with oneor more services 230, 240, 250, 260, and 270 over the one or more wiredand/or wireless networks 210. For example, one or more navigationservices 230 can provide navigation information, e.g., map information,location information, route information, and other information, to themobile device 202 a or 202 b. A user of the mobile device 202 b caninvoke a map functionality, e.g., by pressing the maps object 144 on thetop-level graphical user interface shown in FIG. 1, and can request andreceive a map for a particular location, request and receive routedirections, or request and receive listings of businesses in thevicinity of a particular location, for example.

A messaging service 240 can, for example, provide e-mail and/or othermessaging services. A media service 250 can, for example, provide accessto media files, such as song files, audio books, movie files, videoclips, and other media data. In some implementations, separate audio andvideo services (not shown) can provide access to the respective types ofmedia files. A syncing service 260 can, for example, perform syncingservices (e.g., sync files). An activation service 270 can, for example,perform an activation process for activating the mobile device 202 a or202 b. Other services can also be provided, including a software updateservice that automatically determines whether software updates exist forsoftware on the mobile device 202 a or 202 b, then downloads thesoftware updates to the mobile device 202 a or 202 b where the softwareupdates can be manually or automatically unpacked and/or installed.

The mobile device 202 a or 202 b can also access other data and contentover the one or more wired and/or wireless networks 210. For example,content publishers, such as news sites, RSS feeds, web sites, blogs,social networking sites, developer networks, etc., can be accessed bythe mobile device 202 a or 202 b. Such access can be provided byinvocation of a web browsing function or application (e.g., a browser)in response to a user touching, for example, a Web object.

Example Mobile Device Architecture

FIG. 3 is a block diagram of an example architecture for the mobiledevice of FIG. 1. The mobile device 100 can include a memory interface302, one or more data processors, image processors and/or centralprocessing units 304, and a peripherals interface 306. The memoryinterface 302, the one or more processors 304 and/or the peripheralsinterface 306 can be separate components or can be integrated in one ormore integrated circuits. The various components in the mobile device100 can be coupled by one or more communication buses or signal lines.

Sensors, devices, and subsystems can be coupled to the peripheralsinterface 306 to facilitate multiple functionalities. For example, amotion sensor 310, a light sensor 312, and a proximity sensor 314 can becoupled to the peripherals interface 306 to facilitate the orientation,lighting, and proximity functions described with respect to FIG. 1.Other sensors 316 can also be connected to the peripherals interface306, such as a positioning system (e.g., GPS receiver), a temperaturesensor, a biometric sensor, or other sensing device, to facilitaterelated functionalities.

A camera subsystem 320 and an optical sensor 322, e.g., a chargedcoupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)optical sensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 324, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 324 can depend on the communication network(s)over which the mobile device 100 is intended to operate. For example, amobile device 100 may include communication subsystems 324 designed tooperate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi orWiMax network, and a Bluetooth™ network. In particular, the wirelesscommunication subsystems 324 may include hosting protocols such that thedevice 100 may be configured as a base station for other wirelessdevices.

An audio subsystem 326 can be coupled to a speaker 328 and a microphone330 to facilitate voice-enabled functions, such as voice recognition,voice replication, digital recording, and telephony functions.

The I/O subsystem 340 can include a touch screen controller 342 and/orother input controller(s) 344. The touch-screen controller 342 can becoupled to a touch screen 346. The touch screen 346 and touch screencontroller 342 can, for example, detect contact and movement or breakthereof using any of a plurality of touch sensitivity technologies,including but not limited to capacitive, resistive, infrared, andsurface acoustic wave technologies, as well as other proximity sensorarrays or other elements for determining one or more points of contactwith the touch screen 346.

The other input controller(s) 344 can be coupled to other input/controldevices 348, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of the speaker 328 and/or the microphone 330.

In one implementation, a pressing of the button for a first duration maydisengage a lock of the touch screen 346; and a pressing of the buttonfor a second duration that is longer than the first duration may turnpower to the mobile device 100 on or off. The user may be able tocustomize a functionality of one or more of the buttons. The touchscreen 346 can, for example, also be used to implement virtual or softbuttons and/or a keyboard.

In some implementations, the mobile device 100 can present recordedaudio and/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the mobile device 100 can include the functionality ofan MP3 player, such as an iPod™. The mobile device 100 may, therefore,include a 36-pin connector that is compatible with the iPod. Otherinput/output and control devices can also be used.

The memory interface 302 can be coupled to memory 350. The memory 350can include high-speed random access memory and/or non-volatile memory,such as one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). The memory 350can store an operating system 352, such as Darwin, RTXC, LINUX, UNIX, OSX, WINDOWS, or an embedded operating system such as VxWorks. Theoperating system 352 may include instructions for handling basic systemservices and for performing hardware dependent tasks. In someimplementations, the operating system 352 can be a kernel (e.g., UNIXkernel).

The memory 350 may also store communication instructions 354 tofacilitate communicating with one or more additional devices, one ormore computers and/or one or more servers. The memory 350 may includegraphical user interface instructions 356 to facilitate graphic userinterface processing; sensor processing instructions 358 to facilitatesensor-related processing and functions; phone instructions 360 tofacilitate phone-related processes and functions; electronic messaginginstructions 362 to facilitate electronic-messaging related processesand functions; web browsing instructions 364 to facilitate webbrowsing-related processes and functions; media processing instructions366 to facilitate media processing-related processes and functions;GPS/Navigation instructions 368 to facilitate GPS and navigation-relatedprocesses and instructions; camera instructions 370 to facilitatecamera-related processes and functions; and/or other softwareinstructions 372 to facilitate other processes and functions, e.g.,security processes and functions. The memory 350 may also store othersoftware instructions (not shown), such as web video instructions tofacilitate web video-related processes and functions; and/or webshopping instructions to facilitate web shopping-related processes andfunctions. In some implementations, the media processing instructions366 are divided into audio processing instructions and video processinginstructions to facilitate audio processing-related processes andfunctions and video processing-related processes and functions,respectively. An activation record and International Mobile EquipmentIdentity (IMEI) 374 or similar hardware identifier can also be stored inmemory 350.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures, or modules. The memory 350 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device 100 may be implemented in hardware and/orin software, including in one or more signal processing and/orapplication specific integrated circuits.

Example Positioning System

FIG. 4 illustrates an example positioning system which can be used withthe mobile device of FIG. 1. In FIG. 4, mobile device 402 can representmobile device 100. The mobile device 402 can, for example, communicateto one or more network access points 404 (e.g., Wi-Fi base stationdevices) or one or more cell towers 406. In some implementations, theaccess points 404 can be any combination of 802.11b/g wireless routers,802.11n wireless routers, and some other Wi-Fi devices that implementany suitable Wi-Fi or other wireless networking technology or protocol(e.g., GPS protocol). Using the communication with the access points 404or the cell towers 406, a location-based service 408 (Location-BasedService A) or a location-based service 410 (Location-Based Service B)can estimate geographic areas where the mobile device 402 is currentlylocated. The actual location of the mobile device 402 can be anywherewithin the estimated geographic area. An estimated geographic area isnot necessarily circular but can be indicated as a circular area on amap display for convenience.

The mobile device 402 can, for example, receive a communication 412Afrom an access point 404 (e.g., a Wi-Fi access point). The communication412A can include information about the access point 404, e.g., theInternet Protocol (IP) address and/or the Media Access Control (MAC)address of the access point 404. The communication 412A can includeother information, such as the latitude and longitude of the accesspoint 404. The information received in communication 412A can be sent tothe location-based service 408 in communication 412B. The location-basedservice 408 can, for example, with a degree of uncertainty or error,estimate a first geographic area in which the mobile device 402 iscurrently located using the information sent in communication 412B. Insome implementations, the location-based service 408 is a system orservice that estimates, with some degree of uncertainty or error, theposition of a device using a database of access points mapped togeographic locations. The accuracy or precision (or the degree ofuncertainty or error) of the estimated position can, for example, bebased on the range of the technology, the accuracy of the range, or someother metric. Accuracy or precision of an estimated position can beaffected by one or more factors including, for example, inherentproperties or limitations of the technology or system, and a level ofdeployment of the given technology or system (e.g., number of accesspoints or cell towers in the vicinity of the device).

In some implementations, the accuracy or precision of the estimatedposition is stated in units of distance (e.g., “the estimated positionis accurate up to 50 meters”). That is, the actual position of themobile device 402 can be within the accuracy distance from the estimatedposition. For example, the first geographic area can be a circlecentered at the latitude and longitude of the estimated position with aradius equal to the stated accuracy or precision (e.g. 38 meters if theaccuracy of the estimated position is up to 38 meters). The firstgeographic area can alternatively be represented on a map display as asquare, rectangle, oval, diamond, triangle, or some other shapedenclosed region.

In some other implementations, unique signatures of multiple accesspoints (e.g. five or more) can be compared to a local cache on themobile device 402 or a central reference database at location-basedservice 408 via network communication (e.g. communication 412B can besent to the location-based service 408). The location-based service 408can use the unique signatures to estimate the latitude and longitude ofthe center of the first geographic circle with an m meter radius (e.g.,about 20 meters).

In some implementations, location-based service 408 includes positioningservices and reference database information provided by SKYHOOK WIRELESSof Boston, Mass.

The mobile device 402 can receive a communication 414A from cell tower406. The cell communication 414A can include, for example, informationidentifying the cell tower 406. In some implementations, the cellcommunication 414A can also include the latitude and longitude of thecell tower 406. The identifying information and/or the latitude andlongitude of the cell tower 406 can be sent to the location-basedservice 410 in communication 414B. The location-based service 410 canestimate a position of the mobile device 402 using the informationincluded in communication 414B and estimate an accuracy of the estimateposition. Thus, for example, the location-based service 410 can estimatea second geographic area in which the mobile device 402 is currentlylocated. In some implementations, the second geographic area isrepresented on a map as a circular region centered at the estimatedposition and with a radius equal to the accuracy of the estimatedposition. In some other implementations, the second geographic area canrepresented on a map by a square or rectangular shaped enclosed region,to name a few additional examples.

In some implementations, the position and the geographic area of themobile device 402 can be estimated using a “cell of origin” positioningtechnology. In some other implementations, the second geographic areacan be determined by cell tower triangulation.

The first and second geographic areas can be sent to the mobile device402 by communications 416 and 418, respectively. The mobile device 402can present, on the touch-sensitive display 102 for example, a map viewincluding an indication of one of the geographic areas if that one isentirely contained within the other geographic area (including the casewhere the boundaries of the geographic areas touch but otherwise no partof the one of the geographic area is outside of the other geographicarea). For example, a map view that includes an indication of the firstgeographic area can be presented if the first geographic area iscompletely contained within the second geographic area. The mobiledevice 402 can present a map view that includes an indication of thesecond geographic area if the first geographic area is not completelycontained within the second geographic area. For example, if thetechnology, system, or service used to estimate the first geographicarea has a greater level of accuracy or precision detail than thetechnology, system, or service used to estimate the second geographicarea, and the first geographic area is determined to be more accurate orprecise based on the first geographic area being entirely within thesecond geographic area, the mobile device 402 can use the firstgeographic area. The level of detail of the technology can, for example,be determined by a priority table stored in the mobile device 402.

In another example, the first geographic area can be estimated using theaccess point 404, and the second geographic area can be estimated usingthe cell tower 406. In this example, the access point 404 was moved fromits original location and the latitude and longitude coordinates of theaccess point 404 as they are known to location-based service 408 areincorrect and the mobile device 402 is not actually located within thefirst geographic area. The cell tower 406 provided correctlocation-based data and the mobile device 402 is located within thesecond geographic area. In this situation, the first and secondgeographic areas do not overlap, so the mobile device 402 would displaya map view indicating the second geographic area. The mobile device 402can be used to determine the accuracy of the first and second geographicareas, or an external server or servers can be used.

The location-based service 408 and location-based service 410 can run onthe same device or on separate devices. For example, the location-basedservices 408 and 410 can run on servers communicating with the mobiledevice 100 through a network (e.g., WAN 214). The servers can beseparate servers or the same server. The location-based services 408 and410 can alternatively run on the mobile device 402.

The mobile device 402 can, for example, connect to additional devices orservices (not shown) for location-based services, instead of, or inaddition to the access point 404 and the cell tower 406. Such devices orservices could include a Bluetooth™ device, GPS, radio or TV towers, orcellular grids, to name a few examples. For example, the mobile device402 can connect to peer devices with the Bluetooth™ communication device188 (FIG. 1) and receive location-based information from other mobiledevices and/or Bluetooth™ enabled devices. In some implementations, themobile device 402 can determine or estimate its position and/orgeographic area using other technologies (e.g., GPS). In someimplementations, the geographic area determined or estimated using anyof these other technologies can be used (e.g., displayed) in lieu of thegeographic area estimated using location-based services 408 or 410(e.g., Wi-Fi or cellular positioning techniques) if the geographic areadetermined or estimated using the other technologies is containedentirely within the geographic area estimated using location-basedservices 408 or 410 and if the other technologies are more accurate orprecise according to the priority table stored in the mobile device 402.

Location Sharing

FIG. 5 illustrates an example map display 500 showing the location ofthe mobile device 100. In the example, shown the location of the mobiledevice 100 is represented by a graphical placemark 502 (e.g., a dot orpushpin) within a geographic area defined by the circle 503. If accuratepositioning technology is available (e.g., GPS) the circle 503 can beomitted from the map display 500. In some implementations, the user cantouch the placemark 502 and a graphical object 504 (e.g., balloon,bubble, window, pane) appears showing the address or other informationfor the location represented by the placemark 502. If the user touches achevron 506 a new page 600 is displayed, as shown in FIG. 6.

FIG. 6 illustrates an example user interface for sharing the location ofthe mobile device 100 with other devices. In the example shown, the page600 includes a thumbnail image 602 of the geographic location of themobile device 100. The thumbnail image 602 can be created from the mapdisplay 500 by “screen grabbing” a portion of the map display 500 aroundthe placemark 502. The thumbnail image 602 can have a lower resolutionthan the map display 500. The page 600 can include various options,including without limitation: adding a location to a bookmark list,finding directions from a current location to a desired destination,removing pins and sharing a location with other users.

In some implementations, a location sharing option 604 is presented onthe mobile device 100 which includes one or more applications that areavailable for sending geographic location data to other devices (e.g.,other mobile devices or desktop computers). In this example, there is abutton 608 for email and a button 606 for SMS messaging. Otherapplications can also be used such as Enhanced Messaging Service (EMS)and Multimedia Messaging Service (MMS). The geographic location data canbe for the current location of the sending device or for any othergeographic location (e.g., a location of a destination, landmark,business, mutual contact).

If the button 608 is touched, then an email user interface can bepresented to the user with a geographic location data file automaticallyattached to the email message. The user can compose a text message forthe email and send the email to another device. At the receiving device,the attached file can be detected and used to trigger a map displayshowing the sender's location and, optionally, the geographic locationof the receiving device.

If the button 606 is touched, then an SMS user interface can bepresented to the user. As described further in reference to FIG. 7A, thegeographic location data can be provided with the SMS message. The SMSmessage can be coded or formatted at the sending device to enable thereceiving device to detect the presence of the geographic location datawith the message. Upon such detection, one or actions can be performed.

Initiating Location Sharing Using Messages

FIG. 7A illustrates an example user interface for instant messaging orSMS/text messaging used by a sending device. The user interface includesa chat area 700, a message composing box 706 and a virtual keyboard 702.In this example, when the user touches the button 606 (FIG. 6), the userinterface shown in FIG. 7A is presented. A graphical object 704 is shownin the chat area 700 with an icon 706 to indicate that the message willbe sent with geographic location data to the receiving device. The icon706 can be a thumbnail image similar to the thumbnail image 602 shown inFIG. 6. The user can compose a message using the composing box 706 andcan initiate sending the message by touching the send button 708. In theexample shown, the user (“Greg”) is sending his current location to afriend named “Mike” who he is currently engaged in a chat session withGreg. Greg types “Greg's location” in the composing box 706 and touchesthe send button 708 to send the message with the geographic locationdata associated with the current location of Greg's mobile device 710.

FIG. 7B illustrates an example user interface for instant messaging orSMS/text messaging used by a receiving device. Continuing with theexample of FIG. 7A, the message sent by Greg is received at Mike'smobile device 710. The message is received in a balloon 714 in a chatarea 709. When Mike touches the icon 716, a map display 802 is presentedon the mobile device 710 as shown in FIG. 8.

FIG. 8 illustrates an example map display 802 showing locations for thesending device 100 and the receiving device 710. The geographic locationof the mobile device 100 (Greg's mobile device) can be represented onthe map display 802 by a placemark 804. When Mike touches the placemark804 a graphical object 808 is displayed on the map display 802 withgeographic location data (e.g., address) or other related information(e.g., phone number, email, vcard, link). Optionally, the location ofthe mobile device 710 is represented on the map display 802 by aplacemark 806. Touching the chevrons 810 or 812 results in pages beingdisplayed that are similar to page 600 shown in FIG. 6, but specific tothe locations represented by the placemarks 804 and 806, respectively.

Example Location Sharing Process (Sending Device)

FIG. 9 is a flow diagram of an example process 900 for sharinggeographic location data which can be implemented by a sending device(e.g., mobile device 100). In some implementations, the process 900begins by determining a location of a first device (902). The locationcan be determined using one or more positioning technologies (e.g., GPS,cell tower, triangulations, Wi-Fi). A graphical representation of thelocation is presented on a map display of the first device with anoption to share the location (904). For example, a placemark (e.g., adot, circle, pushpin) can be presented on the map display. In FIG. 5,the user can touch a chevron 506 to display a user interface thatprovides an option to share location information.

Input is received specifying an option to share location informationassociated with the first mobile device (906). An example user interfaceis the page 600 shown in FIG. 6. The user can select from one or moreapplications to share location data (908). Some examples of applicationsare email and instant messaging. For email or instant messagingapplications, a message composed by the user can be received (910).

With some applications, such as SMS messaging applications, the amountof data that can be sent with a text message is limited. The locationinformation (e.g., address or position coordinates) can be included in aURL that is sent to the receiving device. To reduce the size of the URL,a short identifier or alias can be created for the URL (e.g., usinghashing techniques) and sent to the second device in place of the longerURL. When the recipient user touches or clicks on the alias, thereceiving device redirects the short identifier or alias to the longerURL containing the geographic location data. In some implementations,the geographic location data can be sent as a file to the receivingdevice where it can be opened and read. In some implementations, theindicator or alias redirects the receiving device to a network-basedresource (e.g., a map service server) for receiving the geographiclocation data and any other related information.

In some implementations, the text message string can be optionallymodified (e.g., coded or formatted) to signal the presence of geographiclocation data associated with the message (912). The modifying can bedetected by the receiving device and used by the receiving device toinitiate one or more actions on the receiving device, as described inreference to FIG. 10. Some example formatting techniques can includeadding one or more spaces or symbols to a text string, changing thestyle, size or font of the text string (e.g., bold, italic). Forexample, a message sent from “1 Infinite Loop, Cupertino, Calif.” may beformatted as follows: “_(— —)1 Infinite Loop, Cupertino, Calif.” In thisexample, two spaces “_(— —)” were added to the beginning of the textstring. These spaces can be detected by the receiving device and used toinform the receiving device that the text message is an address. Thereceiving device can invoke a map service client to display the location“1 Infinite Loop, Cupertino, Calif.” on a map display of the receivingdevice. While any suitable coding or formatting technique can be used,it may be desirable to select a code or format that is human readableand has a low probability of being part of text composed by the user orotherwise makes the text difficult to read. In some implementationswhere the device is a mobile phone, a GSM7 alphabet or similarly knownalphabet can be used to indicate the presence of geographic locationdata with a message.

The location data (e.g., the URL) and optionally modified text messageis sent to the receiving device using the selected location sharingapplication (914). In some implementations, the sending device canbroadcast geographic location data to multiple devices. The user can seta schedule for the broadcast. For example, the user can set the deviceto broadcast geographic location data at a desired frequency andduration (e.g., every hour for a week).

In some implementations, a user can activate a mode on the mobile devicefor continuous location sharing. For example, a first user cancontinually track the location of a second user who has agreed to sharetheir location with the first user. This can be a useful feature for twousers who are trying to find each other at a crowded public venue or ina city, etc.

In some implementations, a first user can ask a second user for theirlocation in several ways. As described above, a mode can be activatedwhere a user's/mobile device location is continually shared to allowtracking. A location can be requested using text messaging. Mobiledevices of recipient users can detect the messages and automaticallypresent a user interface for requesting location sharing. A dedicatedlocation sharing user interface can be presented on the mobile device.The dedicated user interface could be displayed in a maps application,for example.

Example Location Sharing Process (Receiving Device)

FIG. 10 is a flow diagram of an example process 1000 for sharinglocation data which can be implemented by a receiving device (e.g., thereceiving device 710). In some implementations, the process 1000 beginsby receiving geographic location data from the first device and anoptionally coded/formatted text message (1002). The text message isdecoded or detected and used to generate a trigger event (1004). Forexample, the text string can be parsed and searched for a pattern, suchas added spaces at the beginning of a text string, as described in theprevious example. Input is optionally received by the recipientspecifying acceptance of the geographic location data (1006). Forexample, a user interface can be presented asking the user whether theywish to accept the data. The trigger event or user input can initiateone or more actions, such as automatically generating a map displayshowing the location of the first device and, optionally, the locationof the second device (1008). A route from the first device to the seconddevice can be generated by a map service and displayed on the mapdisplay of the first and/or second device.

Sharing Contact Information

In some implementations, in addition to location information, contactscan be shared as an email (e.g., as a vcard) or as an SMS message. Forcontact sharing between mobile devices, an SMS message may be restrictedto text of a GSM character set. One issue with receiving a contact as atext message is how to format the information in the contact. In someimplementations, the SMS message can use space encoding (or encodingusing non-visible characters) to delineate data fields in the contactinformation. Upon receipt, the encoded SMS message is decoded, and thecontact information is added to appropriate fields of a new contact inan address book application, for example. Additionally, formattinginformation can be stripped from a v-card or contact prior to sendingthe v-card or contact information over SMS.

The features described can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. The features can be implemented in a computerprogram product tangibly embodied in an information carrier, e.g., in amachine-readable storage device or in a propagated signal, for executionby a programmable processor; and method steps can be performed by aprogrammable processor executing a program of instructions to performfunctions of the described implementations by operating on input dataand generating output.

The described features can be implemented advantageously in one or morecomputer programs that are executable on a programmable system includingat least one programmable processor coupled to receive data andinstructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language (e.g., Objective-C, Java), includingcompiled or interpreted languages, and it can be deployed in any form,including as a stand-alone program or as a module, component,subroutine, or other unit suitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors orcores, of any kind of computer. Generally, a processor will receiveinstructions and data from a read-only memory or a random access memoryor both. The essential elements of a computer are a processor forexecuting instructions and one or more memories for storing instructionsand data. Generally, a computer will also include, or be operativelycoupled to communicate with, one or more mass storage devices forstoring data files; such devices include magnetic disks, such asinternal hard disks and removable disks; magneto-optical disks; andoptical disks. Storage devices suitable for tangibly embodying computerprogram instructions and data include all forms of non-volatile memory,including by way of example semiconductor memory devices, such as EPROM,EEPROM, and flash memory devices; magnetic disks such as internal harddisks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROMdisks. The processor and the memory can be supplemented by, orincorporated in, ASICs (application-specific integrated circuits).

To provide for interaction with a user, the features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

The features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include, e.g., a LAN, a WAN, and thecomputers and networks forming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork. The relationship of client and server arises by virtue ofcomputer programs running on the respective computers and having aclient-server relationship to each other.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made. For example,elements of one or more implementations may be combined, deleted,modified, or supplemented to form further implementations. As yetanother example, the logic flows depicted in the figures do not requirethe particular order shown, or sequential order, to achieve desirableresults. In addition, other steps may be provided, or steps may beeliminated, from the described flows, and other components may be addedto, or removed from, the described systems. Accordingly, otherimplementations are within the scope of the following claims.

1. A method comprising: presenting a graphical placemark on a mapdisplay, the graphical placemark corresponding to a geographic location;obtaining a selection of the graphical placemark; in response to theselection of the graphical placemark, presenting a graphical object thatincludes information associated with the geographic location; receivinga selection of the graphical object; in response to the selection of thegraphical object, presenting a user interface for specifying two or moremechanisms for sharing the geographic location; obtaining input to theuser interface specifying a mechanism for sharing geographic locationdata for the geographic location with a device, wherein the mechanism isone of email or text messaging; encoding the geographic location data,where the encoding reduces a size of the geographic location data,wherein the geographic location data comprises a uniform resourcelocator; presenting a messaging interface in response to obtaining inputspecifying a mechanism for sharing geographic location data; sending theencoded geographic location data with a message to the device using thespecified mechanism, where the message is modified to signal thepresence of the geographic location data associated with the message,comprising: displaying in the messaging interface a graphical messageobject having a graphical element indicating that the message isassociated with the geographic location; receiving textual input; anddisplaying the textual input in the graphical message object.
 2. Themethod of claim 1, further comprising: providing a virtual keyboard fortyping the message.
 3. The method of claim 1, where the geographiclocation data includes map data associated with the geographic location.4. The method of claim 1, where the geographic location data includes alink to a network-based map service for providing map data associatedwith the geographic location data.
 5. The method of claim 1, wherein themessaging interface is an e-mail interface.
 6. The method of claim 1,wherein the messaging interface is a chat interface.
 7. The method ofclaim 1, wherein the messaging interface is a text messaging interface.8. The method of claim 1, wherein encoding the geographic location datacomprises hashing the geographic location data.
 9. The method of claim1, where the graphical element is an image of a portion of the mapdisplay.
 10. The method of claim 1, where the graphical element is animage of a portion of the map display that includes the geographiclocation.
 11. A system comprising: a processor; and memory coupled tothe processor and storing instructions which, when executed by theprocessor, cause the processor to perform operations comprising:presenting a graphical placemark on a map display, the graphicalplacemark corresponding to a geographic location; obtaining a selectionof the graphical placemark; in response to the selection of thegraphical placemark, presenting a graphical object that includesinformation associated with the geographic location; receiving aselection of the graphical object; in response to the selection of thegraphical object, presenting a user interface for specifying two or moremechanisms for sharing the geographic location; obtaining input to theuser interface specifying a mechanism for sharing geographic locationdata for the geographic location with a device, wherein the mechanism isone of email or text messaging; encoding the geographic location data,where the encoding reduces a size of the geographic location data,wherein the geographic location data comprises a uniform resourcelocator; sending the encoded geographic location data with a message tothe device using the specified mechanism, where the message is modifiedto signal the presence of the geographic location data associated withthe text message, comprising: displaying in the messaging interface agraphical message object having a graphical element indicating that themessage is associated with the geographic location; receiving textualinput; and displaying the textual input in the graphical message object.12. The system of claim 11, wherein the instructions that cause encodingthe geographic location data comprise instructions that cause hashingthe geographic location data.
 13. A non-transitory computer-readablemedium having instructions stored thereon, which, when executed by aprocessor, cause the processor to perform operations comprising:presenting a graphical placemark on a map display, the graphicalplacemark corresponding to a geographic location; obtaining a selectionof the graphical placemark; in response to the selection of thegraphical placemark, presenting a graphical object that includesinformation associated with the geographic location; receiving aselection of the graphical object; in response to the selection of thegraphical object, presenting a user interface for specifying two or moremechanisms for sharing the geographic location; obtaining input to theuser interface specifying a mechanism for sharing geographic locationdata for the geographic location with a device, wherein the mechanism isone of email or text messaging; encoding the geographic location data,where the encoding reduces a size of the geographic location data,wherein the geographic location data comprises a uniform resourcelocator; presenting a messaging interface in response to obtaining inputspecifying a mechanism for sharing geographic location data; sending theencoded geographic location data with a message to the device using thespecified mechanism, where the message is modified to signal thepresence of the geographic location data associated with the message,comprising: displaying in the messaging interface a graphical messageobject having a graphical element indicating that the message isassociated with the geographic location; receiving textual input; anddisplaying the textual input in the graphical message object.
 14. Thenon-transitory computer-readable medium of claim 13, wherein theinstructions that cause encoding the geographic location data compriseinstructions that cause hashing the geographic location data.